n=5
def countAndSay(n):
    strs = []
    for i in range(n):
        print("当前的i值：",i)
        #控制外观数列的层数
        if i==0:
            print("............走i==0的路线..........")
            strs.append("1")
        else:
            print("走i!=0的路线.................,..")
            #当i大于1时，开始描述
            strs_cur=""
            count=1
            str_process=strs[i-1][0]
            if i==1:
                strs_cur="11"
            else:
                for j in range(1,len(strs[i-1])):
                    if strs[i-1][j]==str_process:
                        count+=1
                    else:
                        #不相等的时候
                        strs_cur+=str(count)+str_process
                        count=1
                        str_process=strs[i-1][j]
                strs_cur+=str(count)+str_process
            strs.append(strs_cur)
        print(strs)

#空间优化
def countAndSay1(n):
    strs =""
    for i in range(n):
        print("当前的i值：",i)
        #控制外观数列的层数
        if i==0:
            print("............走i==0的路线..........")
            strs="1"
        else:
            print("走i!=0的路线.................,..")
            #当i大于1时，开始描述
            strs_cur=""
            count=1
            str_process=strs[0]
            if i==1:
                strs_cur="11"
            else:
                for j in range(1,len(strs)):
                    if strs[j]==str_process:
                        count+=1
                    else:
                        #不相等的时候
                        strs_cur+=str(count)+str_process
                        count=1
                        str_process=strs[j]
                strs_cur+=str(count)+str_process
            strs=strs_cur
        print(strs)
countAndSay1(n)